home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / tclMotif-1.4 / tests / list.test.old < prev    next >
Text File  |  1995-06-29  |  8KB  |  399 lines

  1.  
  2. if {[string compare test [info procs test]] == 1} then \
  3.   {source defs}
  4.  
  5. # set VERBOSE 1
  6. # set INTERACTIVE 1
  7.  
  8. ############
  9. # work procs
  10. ############
  11.  
  12. proc listItems {} {
  13.   .form.list getValues \
  14.     -items i -itemCount n
  15.   return "$n $i"
  16. }
  17.  
  18. proc listSelectedItems {} {
  19.   .form.list getValues \
  20.     -selectedItems i -selectedItemCount n
  21.   return "$n $i"
  22. }
  23.  
  24. proc indexToY {w n} {
  25.   # calculate the Y co-ord for an index in the list
  26.   $w getValues \
  27.     -height h -itemCount count \
  28.     -visibleItemCount vis
  29.  
  30.   set y [expr {(2*$n - 1) * $h / (2*$count)}]
  31.   return $y
  32. }
  33.  
  34. proc pause {} {
  35.   # pause, so that repeated button clicks are not
  36.   # mistaken for double clicks!
  37.  
  38. # this stuff doesn't work like it should.
  39. #  .form.list getValues -doubleClickInterval c
  40. #  set wait [expr {(2 * $c) / 1000}]
  41. #  if {$wait < 1} {
  42. #    set wait 1
  43. #  }
  44. #  exec sleep $wait
  45.  
  46.   # so busy wait instead
  47.   set n 0
  48.   while {$n < 10000} {incr n}
  49. }
  50.  
  51. proc getIO {} {
  52.   puts stdout "Press a key"
  53.   gets stdin s
  54. }
  55.  
  56. proc buttonPress {w n} {
  57.   # simulate a button press 
  58.   return [$w callActionProc ListBeginSelect() \
  59.         -type ButtonPress \
  60.         -x 0 -y [indexToY $w $n]]
  61. }
  62.  
  63. proc buttonRelease {w n} {
  64.   # simulate a button release 
  65.   return [$w callActionProc ListEndSelect() \
  66.         -type ButtonRelease \
  67.         -x 0 -y [indexToY $w $n]]
  68. }
  69.  
  70. #############
  71. # starts here
  72. #############
  73.  
  74. xtAppInitialize -class List
  75. . setValues -allowShellResize true
  76.  
  77. xmForm .form managed
  78. xmList .form.list managed \
  79.   -visibleItemCount 4 \
  80.   -items "a, b, c, d" -itemCount 4
  81.  
  82. . realizeWidget
  83.  
  84. ######################
  85. # List element setting
  86. ######################
  87.  
  88. test list-1.1 {list items} {
  89.     listItems
  90. } {4 a, b, c, d}
  91.  
  92. test list-1.2 {resetting list items} {
  93.     .form.list setValues \
  94.     -items "A, B, C, D, E" -itemCount 5
  95.     listItems
  96. } {5 A, B, C, D, E}
  97.  
  98. test list-1.3 {clearing list items} {
  99.     .form.list setValues \
  100.     -items "" -itemCount 0
  101.     listItems
  102. } {0 }
  103.  
  104. test list-1.4 {resetting list items} {
  105.     .form.list setValues \
  106.     -items "a, b, c, d" -itemCount 4
  107.     listItems
  108. } {4 a, b, c, d}
  109.  
  110. ################################
  111. # Selecting list items by code #
  112. ################################
  113.  
  114. ########
  115. # select
  116. ########
  117. test list-2.1 {selecting list item} {
  118.     .form.list setValues \
  119.     -selectedItems "b" -selectedItemCount 1
  120.     listSelectedItems
  121. } {1 b}
  122.  
  123. ##########
  124. # reselect
  125. ##########
  126. test list-2.2 {reselecting list items} {
  127.     .form.list setValues \
  128.     -selectedItems "a, c" -selectedItemCount 2
  129.     listSelectedItems
  130. } {2 a, c}
  131.  
  132. #######
  133. # clear
  134. ######
  135. test list-2.3 {clearing list selection} {
  136.     .form.list setValues \
  137.     -selectedItems "" -selectedItemCount 0
  138.     listSelectedItems
  139. } {0 }
  140.  
  141. ##########
  142. # reselect
  143. ##########
  144. test list-2.4 {reselecting list items} {
  145.     .form.list setValues \
  146.     -selectedItems "a, b, c, d" -selectedItemCount 4
  147.     listSelectedItems
  148. } {4 a, b, c, d}
  149.  
  150. ###################################
  151. # Modifying list items by methods #
  152. ###################################
  153.  
  154. ########
  155. # Adding
  156. ########
  157.  
  158. test list-3.1 {adding list item at front} {
  159.     .form.list addItem aa 1
  160.     listItems
  161. } {5 aa, a, b, c, d}
  162.  
  163. test list-3.2 {adding list item at end} {
  164.     .form.list addItem e 0
  165.     listItems
  166. } {6 aa, a, b, c, d, e}
  167.  
  168. test list-3.3 {adding list item in middle} {
  169.     .form.list addItem bb 4
  170.     listItems
  171. } {7 aa, a, b, bb, c, d, e}
  172.  
  173. ##########
  174. # Deleting
  175. ##########
  176.  
  177. test list-3.4 {deleting list item at front} {
  178.     .form.list deleteItem aa
  179.     listItems
  180. } {6 a, b, bb, c, d, e}
  181.  
  182. test list-3.5 {deleting list item at middle} {
  183.     .form.list deleteItem c
  184.     listItems
  185. } {5 a, b, bb, d, e}
  186.  
  187. test list-3.6 {deleting all list items} {
  188.     .form.list deleteAllItems
  189.     listItems
  190. } {0 }
  191.  
  192. test list-3.7 {adding item to empty list} {
  193.     .form.list addItem a 1
  194.     listItems
  195. } {1 a}
  196.  
  197. test list-3.8 {deleting list item by position} {
  198.     .form.list deletePosition 1
  199.     listItems
  200. } {0 }
  201.  
  202.  
  203. ####################
  204. # callback testing #
  205. ####################
  206.  
  207. .form.list setValues \
  208.     -items "a, b, c, d" -itemCount 4
  209. .form.list singleSelectionCallback listSelectedItems
  210.  
  211. test list-4.1 {single selection callback} {
  212.     .form.list setValues -selectionPolicy single_select \
  213.     -selectedItems "" -selectedItemCount 0
  214.     buttonPress .form.list 1
  215.     buttonRelease .form.list 1
  216. } {1 a}
  217.  
  218. test list-4.2 {single selection callback} {
  219.     pause
  220.     .form.list setValues -selectionPolicy single_select \
  221.     -selectedItems "" -selectedItemCount 0
  222.     buttonPress .form.list 2
  223.     buttonRelease .form.list 2
  224. listSelectedItems
  225. } {1 b}
  226.  
  227. test list-4.3 {single selection callback} {
  228.     pause
  229.     .form.list setValues -selectionPolicy single_select \
  230.     -selectedItems "" -selectedItemCount 0
  231.     buttonPress .form.list 4
  232.     buttonRelease .form.list 4
  233. } {1 d}
  234.  
  235. .form.list destroyWidget
  236.  
  237. ############################
  238. # % substitutions for list #
  239. ############################
  240.  
  241. proc singleCB {item item_position} {
  242.   return "$item $item_position"
  243. }
  244.  
  245. proc multipleCB {selected_items} {
  246.   return $selected_items
  247. }
  248.  
  249. xmList .form.list2 managed \
  250.   -items "a, b, c, d" -itemCount 4 \
  251.   -visibleItemCount 4
  252.  
  253. .form.list2 singleSelectionCallback {singleCB %item %item_position}
  254. .form.list2 multipleSelectionCallback {multipleCB {%selected_items}}
  255.  
  256. ###############
  257. # Single select
  258. ###############
  259. test list-5.1 {% substitutions for single select} {
  260.     .form.list2 setValues \
  261.     -selectionPolicy single_select \
  262.     -selectedItems "" \
  263.     -selectedItemCount 0
  264.     buttonPress .form.list2 2
  265.     buttonRelease .form.list2 2
  266. } {b 2}
  267.  
  268. #################
  269. # Multiple select
  270. #################
  271. test list-5.2 {% substitutions for multiple select} {
  272.     pause
  273.     .form.list2 setValues \
  274.     -selectionPolicy multiple_select \
  275.     -selectedItems "" \
  276.     -selectedItemCount 0
  277.     buttonPress .form.list2 2
  278.     buttonRelease .form.list2 2
  279.     pause
  280.     buttonPress .form.list2 3
  281.     buttonRelease .form.list2 3
  282. } {b, c}
  283.  
  284. .form.list2 destroyWidget
  285.  
  286. ###############################
  287. # Selection of items by methods
  288. ###############################
  289.  
  290. xmList .form.list managed
  291.  
  292. .form.list setValues \
  293.     -items "a, b, c, d" \
  294.     -itemCount 4 \
  295.     -selectedItems "" \
  296.     -selectedItemCount 0 \
  297.     -selectionPolicy single_select
  298.  
  299. test list-6.1 {selectItem - single select} {
  300.     .form.list selectItem a false
  301.     .form.list selectItem c true
  302.     
  303.     listSelectedItems
  304. } {1 c}
  305.  
  306. test list-6.2 {selectItem - multiple select} {
  307.     .form.list setValues \
  308.         -items "a, b, c, d" \
  309.         -itemCount 4 \
  310.         -selectedItems "" \
  311.         -selectedItemCount 0 \
  312.     -selectionPolicy multiple_select
  313.  
  314.     .form.list selectItem c false
  315.     .form.list selectItem a false
  316.     
  317.     listSelectedItems
  318. } {2 a, c}
  319.  
  320. #################################
  321. # Deselection of items by methods
  322. #################################
  323.  
  324. test list-7.1 {deselectItem - multiple select} {
  325.     .form.list setValues \
  326.         -items "a, b, c, d" \
  327.         -itemCount 4 \
  328.         -selectedItems "a, b, d" \
  329.         -selectedItemCount 3 \
  330.     -selectionPolicy multiple_select
  331.  
  332.     .form.list deselectItem b
  333.     
  334.     listSelectedItems
  335. } {2 a, d}
  336.  
  337. test list-7.2 {deselectAllItems} {
  338.     .form.list deselectAllItems
  339.  
  340.     listSelectedItems
  341. } {0 }
  342.  
  343. ################################
  344. # Selection of items by position
  345. ################################
  346.  
  347. .form.list deselectAllItems
  348. .form.list setValues \
  349.     -selectionPolicy multiple_select \
  350.     -items "a,b,c,d" \
  351.     -itemCount 4 \
  352.     -selectedItems "" \
  353.     -selectedItemCount 0
  354.  
  355. test list-8.1 {selectPosition} {
  356.     .form.list selectPosition 1 false
  357.     .form.list selectPosition 3 false
  358.  
  359.     listSelectedItems
  360. } {2 a, c}
  361.  
  362. test list-8.2 {deselectPosition} {
  363.     .form.list deselectPosition 1
  364.  
  365.     listSelectedItems
  366. } {1 c}
  367.  
  368. test list-8.3 {positionSelected - true} {
  369.     .form.list positionSelected 3
  370. } {true}
  371.  
  372.  
  373. test list-8.4 {positionSelected - false} {
  374.     .form.list positionSelected 2
  375. } {false}
  376.  
  377. ################
  378. # Item existence
  379. ################
  380.  
  381. test list-9.1 {itemExists - true} {
  382.     .form.list itemExists c
  383. } {true}
  384.  
  385. test list-9.2 {itemExists - false} {
  386.     .form.list itemExists ccccc
  387. } {false}
  388.  
  389.  
  390. #############
  391. # Finish up #
  392. #############
  393. if { ! $INTERACTIVE} {
  394.   .form.list destroyWidget
  395.   .form destroyWidget
  396. } else {
  397.   . mainLoop
  398. }
  399.